//冒泡排序
#include<stdio.h>
#define Arraylen(a) sizeof(a)/sizeof(a[0])
// int IsBSmaller(int a,int b)
// {
//     if(a<b)
//     {
//         return 1;
//     }
//     else
//     {
//         return 0;
//     }
// }
// int IsBigger(int a,int b)
// {
//     if(a<b)
//     {
//         return 0;
//     }
//     else 
//     {
//         return 1;
//     }
// }
void BubbleSort(int *a,int len)
{
    int medium;
    for(int i=0;i<len-1;i++)
    {
        int flag = 0;
        for(int j=0;j<len-i-1;j++)
        {  
            
            if(a[j]<a[j+1])
            {
                medium = a[j];
                a[j] = a[j+1];
                a[j+1]=medium;
                flag = 1;
            }
        }
        if(flag == 0)
        {
            break;
        }
        
    }

}
//插入排序
void InsertSort(int *a,int len)
{
    for(int i= 1;i<len;i++)
    {
        int temp=a[i];
        int j =0;
        for(j=i;j>0;j--)
        {
            if(a[j-1]>temp)
            {
                a[j]=a[j-1];
            }
            else
            {
                break;
            }
           
        }
        a[j]=temp;
    }
}
//选择排序
void ChooseSort(int *a,int len)
{
    for(int i = 0;i<len;i++)
    {
        int min = i,j;
        int Minum = a[min];
        for(j=i+1;j<len;j++)
        {
            if(a[j]<a[min])
            {
                Minum = a[j];
                min = j;
            }
        }
        int temp = a[i];
        a[i]=Minum;
        a[min]=temp;
    }
}
void ChooseSort2(int *a,int len)
{
    int left = 0;
    int right = len-1;
    while(left<right)
    {
        int min = left;
        int max = right;
        for(int i = left;i<=right;i++)
        {
            if(a[i]<a[min])
            min = i;
            if(a[i]>a[max])
            max = i;
        }
        int temp = a[left];
        a[left]=a[min];
        a[min]=temp;

        if(max==left)      
           {  
               max = min;
            }
            else
            {
                 temp=a[right];
                a[right]=a[max];
                a[max]=temp;
            }

        left++;
        right--;
    }
}
//快速排序
void FastSort(int *a,int start,int end)
{
    int temp = a[start];
    int left = start;
    int right = end;
    while(left<right)
    {
       while(temp<a[right]&&left<right)
       {
        right--;
       }
       if(left < right)
       {
        a[left]=a[right];
        left++;
       }
       while(temp>a[left]&&left<right)
       {
        left++;
       }
       if(left<right)
       {
         a[right]=a[left];
         right--;
       }
       a[left] = temp;
       FastSort(a,start,left-1);
       FastSort(a,right+1,end);
    }
}
